"""
Source: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.MultiIndex.html
"""

# region [Global Imports]

from collections.abc import Iterable, Sequence
from typing import Any, Generic, Hashable, TypeVar

from typing_extensions import (
    Final,
    Literal,
    NoReturn,
    ParamSpec,
    Protocol,
    TypeAlias,
    TypeGuard,
    final,
    overload,
)

from ._index import Index

# endregion [Global Imports]

__all__: Final = []

# region [Global Generics]

_Value_t = TypeVar("_Value_t", bound=tuple)
_Value_co = TypeVar("_Value_co", bound=tuple, covariant=True)

# endregion [Global Generics]

class MultiIndex(Index[_Value_co]):
    # region [Class Methods]

    # region [from_arrays]
    @classmethod
    def from_arrays(
        cls,
        arrays: Sequence[Any],
        sortorder: int | None = ...,
        names: Sequence[Hashable | None] | None = ...,
    ) -> MultiIndex[Any]: ...
    # endregion [from_arrays]

    # region [from_product]
    @classmethod
    def from_product(
        cls,
        iterables: Sequence[Iterable[Any]],
        sortorder: int | None = ...,
        names: Sequence[Hashable | None] | None = ...,
    ) -> MultiIndex[Any]: ...
    # endregion [from_product]

    # region [from_tuples]
    @classmethod
    def from_tuples(
        cls,
        tuples: Sequence[Any],
        sortorder: int | None,
        names: Sequence[Hashable | None] | None = ...,
    ) -> MultiIndex[Any]: ...
    # endregion [from_tuples]

    # endregion [Class Methods]

    # region [Incomplete]
    def __getattr__(self, key: str, /) -> Any: ...  # FIXME
    # endregion [Incomplete]
